#include "p_strutils.h"

#include <stdio.h>

std::string to_string(const p_unsigned_int &value)
{
   char buffer[100];
   sprintf(buffer, "%u", value);
   return buffer;
}

std::string to_string(const p_signed_int &value)
{
   char buffer[100];
   sprintf(buffer, "%d", value);
   return buffer;
}

std::string to_string(const float &value)
{
   char buffer[100];
   sprintf(buffer, "%f", value);
   return buffer;
}

std::string to_string(const double &value)
{
   char buffer[100];
   sprintf(buffer, "%Lf", (long double) value);
   return buffer;
}

bool is_alpha(const p_char &c)
{
   switch (c)
   {
   case 'a':
   case 'A':
   case 'b':
   case 'B':
   case 'c':
   case 'C':
   case 'd':
   case 'D':
   case 'e':
   case 'E':
   case 'f':
   case 'F':
   case 'g':
   case 'G':
   case 'h':
   case 'H':
   case 'i':
   case 'I':
   case 'j':
   case 'J':
   case 'k':
   case 'K':
   case 'l':
   case 'L':
   case 'm':
   case 'M':
   case 'n':
   case 'N':
   case 'o':
   case 'O':
   case 'p':
   case 'P':
   case 'q':
   case 'Q':
   case 'r':
   case 'R':
   case 's':
   case 'S':
   case 't':
   case 'T':
   case 'u':
   case 'U':
   case 'v':
   case 'V':
   case 'w':
   case 'W':
   case 'x':
   case 'X':
   case 'y':
   case 'Y':
   case 'z':
   case 'Z':
   case '_':
      return true;
   }
   return false;
}

bool is_num(const p_char &c)
{
   switch (c)
   {
   case '0':
   case '1':
   case '2':
   case '3':
   case '4':
   case '5':
   case '6':
   case '7':
   case '8':
   case '9':
      return true;
   }
   return false;
}

bool is_alnum(const p_char &c)
{
   return is_alpha(c) || is_num(c);
}

bool is_blank(const p_char &c)
{
   switch (c)
   {
   case ' ':
   case '\r':
   case '\n':
   case '\t':
      return true;
   }
   return false;
}

bool is_eoln(const p_char &c)
{
   switch (c)
   {
   case '\n':
   case '\r':
      return true;
   }
   return false;
}
